package tech.aistar.day07;

/**
 * 本类用来演示: 克隆
 *
 * @author: success
 * @date: 2022/7/26 10:34 上午
 */
public class CloneDemo {
    public static void main(String[] args) {
        Book b1 = new Book(1,"java编程思想",100.0d);
        BookInfo bookInfo = new BookInfo(10,"success");
        b1.setBookInfo(bookInfo);

        try {
            //clone方法没有走构造 - 直接走的内存 - 内存中直接开辟区域,直接复制
            //比自己再去new性能要高.
            Book b2 = (Book) b1.clone();

            //修改基本数据类型和String
            b1.setId(100);
            b1.setBookName("javascript");

            //修改对象类型 - bookInfo,对副本对象b2产生了影响
            b1.getBookInfo().setAuthor("tom");


            System.out.println(b2);
            System.out.println(b1 == b2);//false
            System.out.println(b2.getBookInfo());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}
